package com.khotyn.heresy.dao;

import java.util.List;

import com.khotyn.heresy.bean.Album;

/**
 * Album Bean DAO
 * 2009.4.28:增加了findAllAlbum（）,selectAlbumByID(Album album)，selectAlbumByUserID(Album album)，
 * getAlbumCountByUserID(Album album)，updateAlbumByID(Album album)，updateAlbumNameByID(Album album)，
 * updateAlbumDescriptionByID(Album album)，updateEnvelopPicUrl(Album album)，updateFlagSortType(Album album)，
 * updateFlagPermission(Album album)，deleteAlbumByID(Album album).修改人：赵洁琼
 * @author 黄挺
 */
public interface AlbumDAO {
	/**
	 * 获取相册内图片数量
	 * @param albumID 相册ID
	 * @return 相册内的图片数量
	 */
	public Integer getPictureCount(Integer albumID);
	
	/**
	 * 更新相册内的图片数量
	 * @param album 相册Bean
	 * @return 影响行数
	 */
	public int updatePictureCount(Album album);
	
	/**
	 *创建一个新的相册
	 *@param album 相册Bean
	 *@return 新记录主键
	 */
	public Integer insertAlbum(Album album);
	
	/**
	 * 返回所有的相册
	 *@return 所有的相册
	 */
	public List<Album> findAllAlbum();

	/**
	 * 通过ID查找相册
	 * @param albumID 相册ID
	 * @return album 相册Bean  
	 */
	public Album selectAlbumByID(Integer albumID);
	
	/**
	 * 通过用户ID查找相册
	 * @param userID 用户ID
	 * @return album 相册Bean
	 */
	public List<Album> selectAlbumByUserID(Integer userID);
	
	/**
	 * 得到用户所有拥有的相册数，分页时使用
	 * @param userID 用户ID
	 * @return Integer 相册数
	 */
	public int getAlbumCountByUserID(Album album);
	
	/**
	 * 通过相册ID更新相册的所有信息
	 * @param album 相册Bean
	 * @return 影响行数
	 */
	public int updateAlbumByID(Album album);
	
	/**
	 *通过相册的ID更新相册的标题
	 * @param album 相册Bean
	 * @return 影响行数
	 */
	public int updateAlbumNameByID(Album album);
	
	/**
	 * 通过相册ID更新相册的描述
	 * @param album 相册 bean
	 * @return 影响行数
	 */
	public int updateAlbumDescriptionByID(Album album);
	
	/**
	 * 通过相册ID修改相册封面图片的ID
	 * @param album 相册Bean
	 * @return 影响行数
	 */
	public int updateEnvelopPicId(Integer albumID, String envelopPicId);
	
	/**
	 * 通过相册ID修改相册的排序方式标记位
	 * @param album 相册Bean
	 * @return 影响行数
	 */
	public int updateFlagSortType(Album album);
	
	/**
	 * 通过相册ID修改相册的权限标记位
	 * @param album 相册Bean
	 * @return 影响行数
	 */
	public int updateFlagPermission(Album album);
	
	/**
	 * 通过相册的ID删除相册
	 * @param album 相册Bean
	 */
	public void deleteAlbumByID(Album album);
	
	/**
	 * 根据用户ID来分页查询相册
	 * @param userID 用户ID
	 * @param minRow 记录开始位置
	 * @param maxRow 记录结束位置
	 * @return 相册列表
	 */
	public List<Album> selectPagedAlbumByUserID(Integer userID, Integer minRow, Integer maxRow);
	
	/**
	 * 根据用户ID来删除相册
	 * @param userID 用户ID
	 * @return 影响行数
	 */
	public int delteAlbumByUserID(Integer userID);
	
	public Album selectAlbumByNameAndUserId(Integer userID, String albumName);
}
